package com.lanxin.mp.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.lanxin.mp.entity.MpCardtype;
import com.lanxin.mp.mapper.MpCardtypeMapper;
import com.lanxin.mp.service.IMpCardtypeService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;

/**
 * <p>
 * 名片类型表 服务实现类
 * </p>
 *
 * @author zyq
 * @since 2025-07-16
 */
@Service
public class MpCardtypeServiceImpl extends ServiceImpl<MpCardtypeMapper, MpCardtype> implements IMpCardtypeService {

    @Autowired
    MpCardtypeMapper mpCardtypeMapper;
    /**
     * 实现：根据员工ID查询类型
     */
    @Override
    public List<MpCardtype> getCardtypeById(Integer eid) {
        // 调用Mapper查询（已过滤员工ID）
        return baseMapper.getCardtypeById(eid);
    }

    /**
     * 分页查询实现
     * 基于MyBatis-Plus分页插件，支持类型名称模糊查询
     */
    @Override
    public IPage<MpCardtype> getCardtypesByPage(Integer eid,Integer pageNum, Integer pageSize, String typeName) {
        // 参数校验
        if (pageNum == null || pageNum < 1) {
            pageNum = 1; // 默认第一页
        }
        if (pageSize == null || pageSize < 1 || pageSize > 100) {
            pageSize = 10; // 默认每页10条，最大100条
        }
        QueryWrapper<MpCardtype> queryWrapper = new QueryWrapper<>();
       if(StringUtils.isNotBlank(typeName)){//当type参数满足非空且非纯空格时，才会添加type = ?的SQL条件，否则跳过该条件构造
           queryWrapper.like("type", typeName);
       }
       if(eid != null){
           queryWrapper.eq("eid",eid);
       }
        // 初始化分页对象
        Page<MpCardtype> page = new Page<>(pageNum, pageSize);

        return mpCardtypeMapper.selectPage(page, queryWrapper);
    }

    /**
     * 验证名片类型名称是否存在
     */
    @Override
    public boolean checkNameExists(String name, Integer oid) {
        QueryWrapper<MpCardtype> wrapper = new QueryWrapper<>();
        // 1. 匹配类型名称
        wrapper.eq("type", name);
        // 2. 编辑时排除自身（oid不为null时）
        if (oid != null) {
            wrapper.ne("oid", oid);
        }
        // 3. 查询是否存在记录
        return baseMapper.exists(wrapper);
    }

}